package jdk.thread.collection;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;


/**
 * 同步队列，主要功能是一个线程put元素时会阻塞到另一个线程poll元素时，所以叫同步，相反也是相同的poll也会等put，
 * 如何长时间没有put操作, 那么poll操作就会堆积，poll操作的线程就会一直阻塞着直到有put操作，
 * 同步队列的公平就是先进先出（TransferQueue), 不公平就是后进先出（TransferStack)栈，
 *
 */
public class SynchronousQueueTest {

    public static void main(String[] args) throws InterruptedException {
        SynchronousQueue<Integer> queue = new SynchronousQueue();
        queue.put(1);
        queue.offer(1);
        queue.add(1);

        queue.peek();
        queue.poll();
        queue.take();
    }
}
